﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using GRUPO_4.Negocio;
using GRUPO_4.Dominio;


namespace GRUPO_4.Controllers
{
    public class PostulanteController : Controller
    {
        //
        PostulanteService PostulanteService { get; set; }
        // GET: /Postulante/

        public ActionResult Index()
        {
            ICollection<Postulante> Model = PostulanteService.ListarTodoslosPostulantes();
            return View(Model); 
        }

        //
        // GET: /Postulante/Details/5

        public ActionResult Details(int codPostulante)
        {
            Postulante Model = PostulanteService.ObtenerPostulante(codPostulante);

            return View(Model); 
        }

        //
        // GET: /Postulante/Create

        public ActionResult Create()
        {
            return View();
        } 

        //
        // POST: /Postulante/Create

        [HttpPost]
        public ActionResult Create(FormCollection collection)
        {
            try
            {
                // TODO: Add insert logic here
                if (ModelState.IsValid)
                {
                    Postulante nuevoPostulante = new Postulante();

                    nuevoPostulante.codPostulante = int.Parse((String)collection["codPostulante"]);
                    nuevoPostulante.apePaternoPostulante = (String)collection["apePaternoPostulante"];
                    nuevoPostulante.apeMaternoPostulante = (String)collection["apeMaternoPostulante"];
                    nuevoPostulante.nombre = (String)collection["nombre"];
                    nuevoPostulante.sexo = (String)collection["sexo"];
                    nuevoPostulante.FechaNacimiento = DateTime.Parse((String)collection["FechaNacimiento"]);
                    nuevoPostulante.numeroDocumento = (String)collection["numeroDocumento"];
                    nuevoPostulante.correo = (String)collection["correo"];
                    nuevoPostulante.clave = (String)collection["clave"];
                    nuevoPostulante.telefono = (String)collection["telefono"];
                    nuevoPostulante.ultimaEmpresa = (String)collection["ultimaEmpresa"];
                    nuevoPostulante.area = (String)collection["area"];
                    nuevoPostulante.cargo = (String)collection["cargo"];
                    nuevoPostulante.codProfesion = int.Parse((String)collection["codProfesion"]);

                    PostulanteService.CrearPostulante(nuevoPostulante);

                    return RedirectToAction("Index");
                }
                return View();
            }
            catch (Exception e)
            {
                ModelState.AddModelError(String.Empty, e.Message);
                return View();
            }
        }
        //
        // GET: /Postulante/Edit/5

        public ActionResult Edit(int codPostulante)
        {
            Postulante Model = PostulanteService.ObtenerPostulante(codPostulante);
            return View(Model);
            
        }

        //
        // POST: /Postulante/Edit/5

        [HttpPost]
        public ActionResult Edit(int codPostulante, FormCollection collection)
        {
            try
            {
                if (ModelState.IsValid)
                {
                // TODO: Add update logic here
                  

                    Postulante PostulanteModificar = PostulanteService.ObtenerPostulante(codPostulante);

                    PostulanteModificar.codPostulante = int.Parse((String)collection["codPostulante"]);
                    PostulanteModificar.apePaternoPostulante = (String)collection["apePaternoPostulante"];
                    PostulanteModificar.apeMaternoPostulante = (String)collection["apeMaternoPostulante"];
                    PostulanteModificar.nombre = (String)collection["nombre "];
                    PostulanteModificar.sexo = (String)collection["sexo"];
                    PostulanteModificar.FechaNacimiento = DateTime.Parse((String)collection["FechaNacimiento"]);
                    PostulanteModificar.numeroDocumento = (String)collection["numeroDocumento"];
                    PostulanteModificar.correo = (String)collection["correo"];
                    PostulanteModificar.clave = (String)collection["clave"];
                    PostulanteModificar.telefono = (String)collection["telefono"];
                    PostulanteModificar.ultimaEmpresa = (String)collection["ultimaEmpresa"];
                    PostulanteModificar.area = (String)collection["area"];
                    PostulanteModificar.cargo = (String)collection["cargo"];
                    PostulanteModificar.codProfesion = int.Parse((String)collection["codProfesion"]);

                    PostulanteService.ModificarPostulante(PostulanteModificar);
 
                return RedirectToAction("Index");
                }
                return View();
            }
            catch (Exception e)
            {
                //ModelState.AddModelError(String.Empty, "Error interno al intentar crear el Postulante");
                ModelState.AddModelError(String.Empty, e.Message);
                return View();  
            }
        }

        //
        // GET: /Postulante/Delete/5
 
        public ActionResult Delete(int codPostulante)
        {
            Postulante Model = PostulanteService.ObtenerPostulante(codPostulante);
            return View(Model);
        }

        //
        // POST: /Postulante/Delete/5

        [HttpPost]
        public ActionResult Delete(int codPostulante, FormCollection collection)
        {
            try
            {
                // TODO: Add delete logic here
                Postulante PostulanteEliminar = PostulanteService.ObtenerPostulante(codPostulante);
                PostulanteService.EliminarPostulante(PostulanteEliminar);
                return RedirectToAction("Index");
              
            }
            catch
            {
                return View();
            }
        }
    }
}
